package realQuestion.jianxin;

import java.util.*;
import java.util.stream.Collectors;

import static java.util.stream.Collectors.*;

public class Main1 {

    public static void main(String[] args) {
        Main1 main1 = new Main1();
        System.out.println(main1.Delete_character("aabbcc"));
    }


    public int countSeq (String mystr) {
 String  str="ccbft";
        HashMap<Character, Integer> need = new HashMap<>();
        for (int i = 0; i <str.length() ; i++) {
            char c = str.charAt(i);
            if (!need.containsKey(c)){
                need.put(c,0);
            }
            need.put(c,need.get(c)+1);
        }
        int valid = need.size();

        HashMap<Character, Integer> window = new HashMap<>();
//        int cur
        for (int i = 0; i < mystr.length(); i++) {
            char cur = mystr.charAt(i);
            if (need.containsKey(cur)){
                window.put(cur,window.getOrDefault(cur,0)+1);
                if (need.get(cur)==window.get(cur)){
                }
            }
        }
        return  0;
    }



    public int Delete_character (String s) {
        // write code her
        int[] hash = new int[128];
        int res=0;

        for (int i = 0; i < s.length(); i++) {
            hash[Character.toLowerCase(s.charAt(i))]+=1;
        }

        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0; i < 128; i++) {
            if (hash[i]==0)continue;
            list.add(hash[i]);
        }
//        .collect(Collectors.toList())：这是一个终结操作，它将排序后的流元素收集到一个新的列表中。Collectors.toList()是一个工厂方法，用于创建一个新的ArrayList，其中包含排序后的元素。
//
//        因此，整行代码的目的是将原始整数列表中的元素按升序排序，并将排序后的结果保存在新的列表 collect 中。你可以进一步使用 collect 列表来进行后续的操作或分析。
        List<Integer> list1 = list.stream().sorted().collect(Collectors.toList());
        Integer[] array = new Integer[(list1.size())];
//        collect.toArray(array) 的作用是将一个包含元素的集合（例如 List）转换为一个数组，并将结果存储到指定的数组 array
       list1.toArray(array);
        for (int i = list1.size()-1; i >0 ; i--) {
            if (array[i]==0)continue;
            int left=i-1;
            while (left>=0&&array[left].equals(array[i])){
                array[left]--;
                res++;
                left--;
            }
        }
return   res;



//        HashMap<Character, Integer> need = new HashMap<>();
//        for (int i = 0; i <str.length() ; i++) {
//            char c = str.charAt(i);
//            if (!need.containsKey(c)){
//                need.put(c,0);
//            }
//            need.put(c,need.get(c)+1);
//        }
//
//        HashMap<Integer, Integer> fre = new HashMap<>();
//        for (int a: need.values()
//             ) {
//            fre.put(a,fre.getOrDefault(a,0)+1);
//        }
//





    }

}
